/*
 * CTCPServer.h
 *
 *  Created on: 05.03.2012
 *      Author: caffeine
 */

#ifndef CTCPServer_H_
#define CTCPServer_H_
#include <lampe/config.h>
#include "../../lib/socketlib.h"
#include "../CServer.h"
#include "../CClient.h"
#include <lampe/network/tcp/ITCPServer.h>


namespace lampe{



namespace network{


/**
 * @class CTCPServer
 * Класс реализующий работу TCP сервера
 */
class CTCPServer:public virtual ITCPServer,public CServer{
private:
	SOCKET server;
	SOCK_ADDRESS addr;
	u32 serverport;
	virtual void waitClient();
	virtual bool onStart();
	virtual void onStop();
protected:

public:
	/**
	 * Устанавливает порт сервера. Если сервер уже запущен, то порт изменён не будет
	 *
	 * @return p порт, который нужно устанавить серверу
	 */
	virtual void port(u32 setverPort);

	/**
	 * Возвращяет порт, на котором работает сервер
	 *
	 * @return порт сервера
	 */
	virtual u32 port();
	
	CTCPServer(IServerCallBack*callback);

	/**
	 * Диструктор
	 */
	virtual ~CTCPServer();
};


}//namespace network
}//namespace lampe

#endif /* CTCPServer_H_ */
